home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_plotutils.idb / usr / freeware / share / libplot / h-glyphs.doc.z / h-glyphs.doc
Encoding:
Text File  |  1998-10-28  |  9.1 KB  |  162 lines

  1. The GNU libplot library and the plotting utilities based on it, such as GNU
  2. `graph' and GNU `plot', can display text strings in any of 21 `Hershey
  3. fonts', such as HersheySerif and HersheySerif-Bold.  Hershey fonts are
  4. built from `Hershey glyphs'.  There are two sorts of glyph: standard
  5. (`occidental') and Japanese (`oriental').  The glyphs were digitized by
  6. Dr. Allen V. Hershey at what is now the U.S. Naval Surface Weapons Center
  7. in Dahlgren, VA (formerly the U.S. Naval Weapons Laboratory), mostly during
  8. the late 1960's.
  9.  
  10. There are many glyphs that are not part of any Hershey font.  Such glyphs
  11. must be referred to by number.  For example, the string "\#H0744\#H0745"
  12. uses escape sequences to refer to Hershey glyphs #744 and #745, which are a
  13. shamrock and a fleur-de-lys respectively.  All occidental Hershey glyphs
  14. have numbers in the 0..3999 range, but there are many gaps.  In this file
  15. we explain how the array of occidental glyphs now in GNU libplot was
  16. constructed, and give more information on the numbering scheme.
  17.  
  18. The array was assembled in large part from earlier (pre-GNU) public
  19. distributions of the occidental glyphs.  These included the following.
  20.  
  21. #0. Distributions by Dr. Hershey himself, in the late 1960's and 1970's.
  22. These were distributions of his typographic software, of which the glyph
  23. distribution was a part.  Initial distributions were on punched cards and
  24. later ones were on magnetic tape.  At least 120 copies of the typographic
  25. software were distributed.  It is not known how many distinct releases
  26. there were, either of the software or of the glyphs.
  27.  
  28. #1. The U.S. NBS [U.S. National Bureau of Standards] publication "A
  29. Contribution to Computer Typesetting Techniques", dated 1976, and the
  30. accompanying magnetic tape.  This presumably included all glyphs in use at
  31. that time.  In Figure 15 of that publication, 43 additional glyphs
  32. (digitized by Norman Wolcott at NBS) were shown, but the data for them were
  33. not given.  (Glyphs 2250, 2260 were probably included in Figure 15
  34. erroneously; they were also listed among the standard glyphs).
  35.  
  36. #2. The Usenet distribution of Pete Holzmann <pete@xc.org> and Jim Hurt
  37. (to the newsgroup mod.sources, now defunct).  Circa 1985, but based on the
  38. above 1976 tape.  It introduced the scheme for encoding vector glyphs as
  39. strings which is now used in libplot.  Almost identical to the above (none
  40. of the 43 new Wolcott glyphs), but included three additional glyphs: 997,
  41. 998, 999.  These were merely horizontal strokes.
  42.  
  43. #3. The glyph database incorporated in the PGPLOT subroutine library of
  44. Tim Pearson <tjp@astro.caltech.edu>, still available by ftp and http from
  45. astro.caltech.edu.  This was probably based, c. 1980, on a distribution
  46. obtained either from Nelson Beebe (see #4 below) or directly from
  47. Dr. Hershey.  It included data for the 43 new Wolcott glyphs, and 10
  48. additional glyphs numbered 236 (an cartographic-sized `@'), 590 (an
  49. underscore), 2078 (Aring), 3330, 3331, 3332, 3430, 3431, 3432
  50. (umlaut-accented German letters), and 4000 (a boxed inverted questionmark).
  51. The last of these (#4000) apparently did not originate with Dr. Hershey,
  52. but the others may have.  The horizontal stroke glyphs 997, 998, 999 from
  53. distribution #2 were not present.  Ten glyphs were revised: 1225, 1226,
  54. 1407, 1408, 2225, 2226, 2407, 2408, 3010, and 3159.  The first eight of
  55. these were braces.  There were 1642 separately indexed glyphs in all.
  56.  
  57. #4.  The glyph database incorporated in the PLOT79 utility of Nelson Beebe
  58. <beebe@math.utah.edu>.  Also dates back to c. 1980; based on a tape from
  59. Dr. Hershey himself, with local additions.  All the 1642 glyphs from #3 are
  60. present, except that 590 (an underscore) and 2078 (Aring) are missing.
  61. (The Hershey tape may have been a slightly earlier one than the tape used
  62. for #3?)  Also, 911..922 (twelve outline and filled arrows) and 923..926
  63. (four large pointing hands) were added by Dr. Beebe.  As well, 256 small
  64. fixed-width glyphs (marker symbols taken from a plotter in the 1970's, and
  65. low-resolution alphabets based on the plotter alphabet) in the 1500..1627
  66. and 1700..1827 ranges were added.  There were 1912 separately indexed
  67. glyphs in all.
  68.  
  69. #5.  The glyph database accompanying Dr. Hershey's distribution in the
  70. 1980's of typographic software in True Basic, for PC's.  For details, see
  71. his 1981 technical report `Advanced Computer Typography' and his 1995
  72. technical report `Cartography and Typography with True Basic'.  The 43
  73. Wolcott glyphs (see above) were not present, and the 10 extra glyphs from
  74. the PGPLOT distribution were not present either.  However, an entire new
  75. alphabet (Triplex Greek) was included.  The small upper-case alphabet
  76. (`Cartographic Roman') was extended to include lower-case characters, and a
  77. small `Cartographic Italic' alphabet was added as well.  Many alphabets
  78. were extended by crafting such characters as @, <, >, #, and % for them.
  79. Also, several glyphs were revised.  13 cartographic symbols in the 700..899
  80. range were dropped, probably inadvertently.
  81.  
  82.  
  83. The glyph array built into GNU libplot, and accessible to the GNU plotting
  84. utilities, is a merged version.  It includes all glyphs from distribution
  85. #5, the 43 Wolcott glyphs, and 7 of the 10 additional glyphs from
  86. distribution #3, i.e., 2078 (Aring), and 3330, 3331, 3332, 3430, 3431, 3432
  87. (umlaut-accented German letters).  The 13 cartographic symbols in the
  88. 700..899 range that were inadvertently dropped from distribution #5 have
  89. been restored.
  90.  
  91. Many non-Hershey glyphs were also included in the GNU libplot array of
  92. occidental glyphs, to facilitate the construction of ISO-Latin-1 Hershey
  93. fonts.  The 4000..4194 range contains a large number of such non-Hershey
  94. glyphs.  Nelson Beebe's large pointing hands (923..926 in distribution #4)
  95. were included as 4040..4043.  An important source of non-Hershey glyphs was
  96. Robert Beach's UGS [Unified Graphics System], which was developed at the
  97. SLAC [Stanford Linear Accelerator Center] Computation Research Group in the
  98. 1970's.  (See Computer Graphics, Fall 1974, pp. 22-23.  The UGS source code
  99. may still be available at ftp://ftp.slac.stanford.edu/software/ugs77/ .)
  100. A number of glyphs in the 4000..4025 range were taken from the UGS glyph
  101. repertory.
  102.  
  103. The following is a breakdown of the original Hershey glyphs (defined to
  104. include the 43 Wolcott glyphs and the 10 additional glyphs mentioned
  105. above).  They occupy the 1..3926 range of the occidental array, and may be
  106. accessed individually by escape sequences in the range "\#H0001".."\#H3926".  
  107. They fall into the following groups:
  108.  
  109. 0001..0284    alphanumeric symbols, cartographic [small] size
  110. 0501..0746    alphanumeric symbols, principal [large] size
  111. 0750..0909    centered symbols
  112. 0910        alphanumeric symbols, principal [large] size
  113. 1001..1295    alphanumeric symbols, indexical [medium] size
  114. 1401..2312    alphanumeric symbols, principal [large] size
  115. 2317..2382    centered symbols
  116. 2401..3926    alphanumeric symbols, principal [large] size
  117.  
  118. `Alphanumeric symbols' means not just alphabetic symbols and numerals, but
  119. also punctuation marks, mathematical symbols, etc.; in general, any symbol
  120. that can be viewed as having a well-defined `baseline', and which could
  121. appear in a string of characters resting on that baseline.
  122.  
  123. `Centered symbols' are different.  In practice they would seldom be
  124. displayed in such a way that they are resting on a baseline.  Instead, they
  125. would be drawn so as to be centered on a specified point.  Also, they would
  126. seldom appear in a string.  An example would be the `sand' symbol, Hershey
  127. glyph #0764, which is clearly designed to be drawn on a map rather than to
  128. appear in text.
  129.  
  130. In the original distributions of the Hershey glyphs, no distinction was
  131. made between alphanumeric symbols and centered symbols.  That was possible
  132. because in the coordinate system used by Dr. Hershey, all are centered on
  133. the point (0,0).  The `baseline' concept was not used.  Each alphanumeric
  134. symbols had a well-defined baseline, but the baselines differed for the
  135. three sizes.
  136.  
  137. When strings are drawn with the alabel() function of GNU libplot, e.g.,
  138. when GNU `graph' labels axes, a baseline must be chosen.  For alphanumeric
  139. symbols of all kinds and also centered symbols, we have chosen it to be the
  140. baseline appropriate for the principal [large] size alphanumeric symbols.
  141. This determines a choice of vertical elevation of each symbol, when it is
  142. rendered as an element of a string.
  143.  
  144. If the `x' option to alabel() is used, to place characters on a baseline,
  145. the vertical elevation may not be appropriate for indexical [medium] and
  146. cartographic [small] alphanumeric symbols.  But nowadays the indexical and
  147. cartographic glyphs are seldom accessed.  The only reason for drawing
  148. smaller characters is to draw superscripts and subscripts, and our
  149. rendering algorithm uses miniaturized principal-size characters for that.
  150.  
  151. If you are using the alabel() function to display strings, you may specify
  152. `c' as the third argument to obtain vertical centering, instead of the
  153. usual `x', which places characters on a baseline.  You would use `c' to
  154. place a centered symbol at a specified point.  For example, the function
  155. call
  156.  
  157.     alabel ('c', 'c', "\#H0764");
  158.  
  159. would place the `sand' symbol, glyph #764, at the current position.  The
  160. first argument `c' requests horizontal centering, so the symbol will be
  161. centered both horizontally and vertically.
  162.